---
id: schedule
title: Temporal CLI schedule command reference
sidebar_label: schedule
description: Temporal's Schedule commands allow users to create, update, and manage Workflow Executions seamlessly for automation, supporting commands for creation, backfill, deletion, and more.
toc_max_heading_level: 4
keywords:
  - backfill
  - cli reference
  - command-line-interface-cli
  - schedule
  - schedule backfill
  - schedule create
  - schedule delete
  - schedule describe
  - schedule list
  - schedule toggle
  - schedule trigger
  - schedule update
  - temporal cli
  - updates
tags:
  - Temporal CLI
  - Schedules
---

Schedule commands allow the user to create, use, and update [Schedules](/workflows#schedule).
Schedules control when certain Actions for a [Workflow Execution](/workflows#workflow-execution) are performed, making it a useful tool for automation.

To run a Schedule command, run `temporal schedule [command] [command options]`.

## backfill

The `temporal schedule backfill` command executes Actions ahead of their specified time range.
Backfilling adds [Workflow Runs](/workflows#run-id) from a time period when the Schedule was paused, or from before the Schedule was created.

Schedule backfills require a valid Schedule ID, along with the time in which to run the Schedule and a change to the overlap policy.
The following example fills in Workflow Runs from a point when the Schedule was paused.

```
temporal schedule backfill --schedule-id 'your-schedule-id' \
--overlap-policy 'BufferAll' 				\
--start-time '2022-05-0101T00:00:00Z'		\
--end-time '2022-05-31T23:59:59Z'
```

Temporal recommends setting the Overlap Policy to `BufferAll` to run backfilled Workflows sequentially.

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--end-time](/cli/cmd-options#end-time)

- [--env](/cli/cmd-options#env)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--namespace](/cli/cmd-options#namespace)

- [--overlap-policy](/cli/cmd-options#overlap-policy)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--start-time](/cli/cmd-options#start-time)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

## create

The `temporal schedule create` command creates a new [Schedule](/workflows#schedule).
Newly created Schedules return a Schedule ID to be used in other Schedule commands.

Schedules use the following format:

```
temporal schedule create \
    --schedule-id 'your-schedule-id' \
    --workflow-id 'your-workflow-id' \
    --task-queue 'your-task-queue' \
    --workflow-type 'YourWorkflowType'
```

Actions are executed at the times specified in the Schedule.
For example, the following Schedule starts a Workflow every 5 hours at 15 minutes past the hour.
A Workflow is also started at 11:03 on Fridays.

```
temporal schedule create \
    --schedule-id 'your-schedule-id' \
    --interval '5h/15m' \
    --calendar '{"dayOfWeek":"Fri","hour":"11","minute":"3"}' \
    --overlap-policy 'BufferAll' \
    --workflow-id 'your-workflow-id' \
    --task-queue 'your-task-queue' \
    --workflow-type 'YourWorkflowType'
```

Workflows don't run in parallel.
Setting the `--overlap-policy` to `BufferAll` allows Workflows to run sequentially if they would overlap.

Any combination of `--calendar`, `--interval`, and `--cron` is supported.
Traditional cron strings, along with `CronSchedule` features, are also supported.

```
temporal schedule create \
    --schedule-id 'your-schedule-id' \
    --cron '3 11 * * Fri' \
    --workflow-id 'your-workflow-id' \
    --task-queue 'your-task-queue' \
    --workflow-type 'YourWorkflowType'
```

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--calendar](/cli/cmd-options#calendar)

- [--catchup-window](/cli/cmd-options#catchup-window)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--cron](/cli/cmd-options#cron)

- [--end-time](/cli/cmd-options#end-time)

- [--env](/cli/cmd-options#env)

- [--execution-timeout](/cli/cmd-options#execution-timeout)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--input](/cli/cmd-options#input)

- [--input-file](/cli/cmd-options#input-file)

- [--interval](/cli/cmd-options#interval)

- [--jitter](/cli/cmd-options#jitter)

- [--max-field-length](/cli/cmd-options#max-field-length)

- [--memo](/cli/cmd-options#memo)

- [--memo-file](/cli/cmd-options#memo-file)

- [--namespace](/cli/cmd-options#namespace)

- [--notes](/cli/cmd-options#notes)

- [--overlap-policy](/cli/cmd-options#overlap-policy)

- [--pause](/cli/cmd-options#pause)

- [--pause-on-failure](/cli/cmd-options#pause-on-failure)

- [--remaining-actions](/cli/cmd-options#remaining-actions)

- [--run-timeout](/cli/cmd-options#run-timeout)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--search-attribute](/cli/cmd-options#search-attribute)

- [--start-time](/cli/cmd-options#start-time)

- [--task-queue](/cli/cmd-options#task-queue)

- [--task-timeout](/cli/cmd-options#task-timeout)

- [--time-zone](/cli/cmd-options#time-zone)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

- [--workflow-id](/cli/cmd-options#workflow-id)

- [--workflow-type](/cli/cmd-options#workflow-type)

## delete

The `temporal schedule delete` command deletes a [Schedule](/workflows#schedule).
Deleting a Schedule does not affect any [Workflows](/workflows) started by the Schedule.

[Workflow Executions](/workflows#workflow-execution) started by Schedules can be cancelled or terminated like other Workflow Executions.
However, Workflow Executions started by a Schedule can be identified by their [Search Attributes](/visibility#search-attribute), making them targetable by batch command for termination.

`temporal schedule delete --schedule-id 'your-schedule-id' [command options]`

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--env](/cli/cmd-options#env)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--namespace](/cli/cmd-options#namespace)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

## describe

The `temporal schedule describe` command shows the current [Schedule](/workflows#schedule) configuration.
This command also provides information about past, current, and future [Workflow Runs](/workflows#run-id).

`temporal schedule describe --schedule-id 'your-schedule-id' [command options]`

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--env](/cli/cmd-options#env)

- [--fields](/cli/cmd-options#fields)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--namespace](/cli/cmd-options#namespace)

- [--output](/cli/cmd-options#output)

- [--raw](/cli/cmd-options#raw)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--time-format](/cli/cmd-options#time-format)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

## list

The `temporal schedule list` command lists all [Schedule](/workflows#schedule) configurations.
Listing Schedules in [Standard Visibility](/visibility#standard-visibility) will only provide Schedule IDs.

`temporal schedule list`

Use the options below to change the behavior of this command.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--env](/cli/cmd-options#env)

- [--fields](/cli/cmd-options#fields)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--limit](/cli/cmd-options#limit)

- [--namespace](/cli/cmd-options#namespace)

- [--no-pager](/cli/cmd-options#no-pager)

- [--output](/cli/cmd-options#output)

- [--pager](/cli/cmd-options#pager)

- [--time-format](/cli/cmd-options#time-format)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

## toggle

The `temporal schedule toggle` command can pause and unpause a [Schedule](/workflows#schedule).

Toggling a Schedule requires a reason to be entered on the command line.
Use `--reason` to note the issue leading to the pause or unpause.

Schedule toggles are passed in this format:
`temporal schedule toggle --schedule-id 'your-schedule-id' --pause --reason "paused because the database is down"`
`temporal schedule toggle --schedule-id 'your-schedule-id' --unpause --reason "the database is back up"`

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--env](/cli/cmd-options#env)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--namespace](/cli/cmd-options#namespace)

- [--pause](/cli/cmd-options#pause)

- [--reason](/cli/cmd-options#reason)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

- [--unpause](/cli/cmd-options#unpause)

## trigger

The `temporal schedule trigger` command triggers an immediate action with a given [Schedule](/workflows#schedule).
By default, this action is subject to the Overlap Policy of the Schedule.

Schedule triggers are passed in this format:
`temporal schedule trigger` can be used to start a Workflow Run immediately.
`temporal schedule trigger --schedule-id 'your-schedule-id'`

The Overlap Policy of the Schedule can be overridden as well.
`temporal schedule trigger --schedule-id 'your-schedule-id' --overlap-policy 'AllowAll'`

Use the following options to change this command's behavior.

- [--address](/cli/cmd-options#address)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--env](/cli/cmd-options#env)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--namespace](/cli/cmd-options#namespace)

- [--overlap-policy](/cli/cmd-options#overlap-policy)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

## update

The `temporal schedule update` command updates an existing [Schedule](/workflows#schedule).

Like `temporal schedule create`, updated Schedules need to follow a certain format:

```
temporal schedule update 			    \
    --schedule-id 'your-schedule-id' 	\
    --workflow-id 'your-workflow-id' 	\
    --task-queue 'your-task-queue' 		\
    --workflow-type 'YourWorkflowType'
```

Updating a Schedule takes the given options and replaces the entire configuration of the Schedule with what's provided.
If you only change one value of the Schedule, be sure to provide the other unchanged fields to prevent them from being overwritten.

Use the following options to change the command's behavior.

- [--address](/cli/cmd-options#address)

- [--calendar](/cli/cmd-options#calendar)

- [--catchup-window](/cli/cmd-options#catchup-window)

- [--codec-auth](/cli/cmd-options#codec-auth)

- [--codec-endpoint](/cli/cmd-options#codec-endpoint)

- [--color](/cli/cmd-options#color)

- [--command-timeout](/cli/cmd-options#command-timeout)

- [--cron](/cli/cmd-options#cron)

- [--end-time](/cli/cmd-options#end-time)

- [--env](/cli/cmd-options#env)

- [--execution-timeout](/cli/cmd-options#execution-timeout)

- [--grpc-meta](/cli/cmd-options#grpc-meta)

- [--input](/cli/cmd-options#input)

- [--input-file](/cli/cmd-options#input-file)

- [--interval](/cli/cmd-options#interval)

- [--jitter](/cli/cmd-options#jitter)

- [--max-field-length](/cli/cmd-options#max-field-length)

- [--memo](/cli/cmd-options#memo)

- [--memo-file](/cli/cmd-options#memo-file)

- [--namespace](/cli/cmd-options#namespace)

- [--notes](/cli/cmd-options#notes)

- [--overlap-policy](/cli/cmd-options#overlap-policy)

- [--pause](/cli/cmd-options#pause)

- [--pause-on-failure](/cli/cmd-options#pause-on-failure)

- [--remaining-actions](/cli/cmd-options#remaining-actions)

- [--run-timeout](/cli/cmd-options#run-timeout)

- [--schedule-id](/cli/cmd-options#schedule-id)

- [--search-attribute](/cli/cmd-options#search-attribute)

- [--start-time](/cli/cmd-options#start-time)

- [--task-queue](/cli/cmd-options#task-queue)

- [--task-timeout](/cli/cmd-options#task-timeout)

- [--time-zone](/cli/cmd-options#time-zone)

- [--tls](/cli/cmd-options#tls)

- [--tls-ca-path](/cli/cmd-options#tls-ca-path)

- [--tls-cert-path](/cli/cmd-options#tls-cert-path)

- [--tls-disable-host-verification](/cli/cmd-options#tls-disable-host-verification)

- [--tls-key-path](/cli/cmd-options#tls-key-path)

- [--tls-server-name](/cli/cmd-options#tls-server-name)

- [--workflow-id](/cli/cmd-options#workflow-id)

- [--workflow-type](/cli/cmd-options#workflow-type)
